From: Florian Müllner Date: Mon, 16 Jul 2018 23:36:38 +0000 (+0200) Subject: keyboard: Handle no-window case in FocusTracker X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~929^2~5^2~5 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0dee82fb9fa974ebdb4dd77fd85535a6edf207fd;p=gnome-shell.git keyboard: Handle no-window case in FocusTracker For windows, the cursor location needs to be adjusted by the frame offsets. However we cannot assume that there is a window, as the shell itself can have the key focus. https://gitlab.gnome.org/GNOME/gnome-shell/issues/414 --- diff --git a/js/ui/keyboard.js b/js/ui/keyboard.js index 41942eeaa..1fefb8c6c 100644 --- a/js/ui/keyboard.js +++ b/js/ui/keyboard.js @@ -533,17 +533,25 @@ var FocusTracker = new Lang.Class({ }, _setCurrentRect(rect) { - let frameRect = this._currentWindow.get_frame_rect(); - rect.x -= frameRect.x; - rect.y -= frameRect.y; + if (this._currentWindow) { + let frameRect = this._currentWindow.get_frame_rect(); + rect.x -= frameRect.x; + rect.y -= frameRect.y; + } this._rect = rect; this.emit('position-changed'); }, getCurrentRect() { - let frameRect = this._currentWindow.get_frame_rect(); - let rect = { x: this._rect.x + frameRect.x, y: this._rect.y + frameRect.y, width: this._rect.width, height: this._rect.height }; + let rect = { x: this._rect.x, y: this._rect.y, + width: this._rect.width, height: this._rect.height }; + + if (this._currentWindow) { + let frameRect = this._currentWindow.get_frame_rect(); + rect.x += frameRect.x; + rect.y += frameRect.y; + } return rect; }